package com.hk.model.pojo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.hk.base.BaseEntity;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 客户信息实体类
 *
 * @author [你的姓名]
 * @date [具体日期]
 */
@Data
@TableName("customer")
public class Customer extends BaseEntity implements Serializable {


    /**
     * 姓名，必填，限制2 - 4汉字
     */
    private String name;

    /**
     * 手机号，必填，需验证有效性
     */
    private String phone;

    /**
     * 性别，单选，1代表男
     */
    private Integer sex;

    /**
     * 微信，选填，限制1 - 20字母或数字
     */
    @TableField(condition = "%s IS NOT NULL")
    private String weixin;

    /**
     * QQ，选填，限制1 - 20字母或数字
     */
    @TableField(condition = "%s IS NOT NULL")
    private String qq;

    /**
     * 年龄，选填，取值范围16 - 99
     */
    @TableField(condition = "%s IS NOT NULL")
    private Integer age;

    /**
     * 地区，选填，级联选择，精确到城市
     */
    @TableField(condition = "%s IS NOT NULL")
    private String region;

    /**
     * 意向学科，必填，1:Java，2:前端，3:人工智能，4:大数据，5:Python，6:测试，7:新媒体，8:产品经理，9:UI设计
     */
    private Integer subject;

    /**
     * 备注，选填，0 - 255字
     */
    @TableField(condition = "%s IS NOT NULL")
    private String remarks;

    /**
     * 职业，选填
     */
    @TableField(condition = "%s IS NOT NULL")
    private Integer occupation;

    /**
     * 学历，选填
     */
    @TableField(condition = "%s IS NOT NULL")
    private Integer educationLevel;

    /**
     * 专业，选填
     */
    @TableField(condition = "%s IS NOT NULL")
    private Integer major;

    /**
     * 在职情况，选填
     */
    @TableField(condition = "%s IS NOT NULL")
    private String employmentStatus;

    /**
     * 当前薪资，选填
     */
    @TableField(condition = "%s IS NOT NULL")
    private java.math.BigDecimal currentSalary;

    /**
     * 目标，选填
     */
    @TableField(condition = "%s IS NOT NULL")
    private Integer target;

    /**
     * 商机ID，逻辑外键，用于与商机表建立链接
     */
    @TableField(condition = "%s IS NOT NULL")
    private Integer opportunityId;

    /**
     * 线索id
     */
    @TableField(condition = "%s IS NOT NULL")
    private Integer cluesId;

    /**
     * 归属人类型，1代表我的商机，2代表我下属的商机，3代表负责部门及子部门的商机
     */
    private Integer owner;

    /**
     * 状态，1代表待跟进，2代表跟进中
     */
    @JsonSerialize(using = ToStringSerializer.class)
    private Integer status;
    /**
     * 下次跟进时间
     */
    private LocalDateTime nextTime;

}